const Koa = require('koa')
const KoaRouter = require('@koa/router')
const fs = require('fs')

// 创建实例
const app = new Koa()
const route = new KoaRouter()

// 启动服务、路由中间件挂载app  
app.use(route.routes()).listen(8000, () => console.log('ok'))

// 登录 http://127.0.0.1:8000/login
route.get('/login', (ctx, next) => {
    let { username, password } = ctx.query

    if (!username) {
        /**
          * 在 ctx 中获取 app、通过app.emit() 发送事件
          *      ctx.app.emit('事件名','数据','响应对象') 
          *          参数一：事件名、通过这个事件来监听全局处理
          *          参数二：错误信息
          *          参数三：响应对象、需要将响应对象传递过去、on事件才具备响应数据到客户端的能力
          */
        ctx.response.status = 404
        ctx.app.emit('err', 101, ctx)
        return
    }
    if (!password) {
        ctx.response.status = 404
        ctx.app.emit('err', 102, ctx)
        return
    }
    ctx.response.status = 200
    ctx.body = {
        code: 200,
        message: '登录成功',
        user: { username, password }
    }
})


// 全局错误处理中间件
// 监听事件、处理错误
app.on('err', (code, ctx) => {
    if (code == 101) {
        ctx.body = { code, message: '请输入账户' }
    }
    if (code == 102) {
        ctx.body = { code, message: '请输入密码' }
    }
})
